fs = 100000;    % 采样频率为 100 kHz
fc = 10000;     % 截止频率为 10 kHz
Wn = 2 * fc / fs; % 归一化截止频率
% 设计 4 阶 Butterworth 低通滤波器
[n, Wn] = buttord(Wn, 0.8*Wn, 3, 60);
[b, a] = butter(n, Wn, 'low');
f = logspace(1, 4, 100); % 生成从10^1到10^4的对数均匀分布的100个数字，单位为赫兹
w = 2 * pi * f; % 将频率从赫兹转换为弧度/秒
h = freqs(b, a, w); % 求取滤波器在频域的复频率响应
mag = abs(h); % 复频率响应的幅度
phase = angle(h); % 复频率响应的相位
phasedeg = phase*180/pi; % 相位转换为角度

subplot(2,1,1); % 将画图区域分成两个子图，第一个子图
loglog(f,mag); % 使用对数坐标画幅频曲线
grid on; % 添加网格线
xlabel('Frequency (Hz)'); % 设置x轴标签
ylabel('Magnitude'); % 设置y轴标签

subplot(2,1,2); % 第二个子图
semilogx(f,phasedeg); % 使用对数坐标画相频曲线
grid on; % 添加网格线
xlabel('Frequency (Hz)'); % 设置x轴标签
ylabel('Phase (degrees)'); % 设置y轴标签
